home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
elk-2_0.lha
/
elk-2.0
/
doc
/
tmac
/
fixindex.awk
< prev
next >
Wrap
Text File
|
1990-03-01
|
2KB
|
74 lines
BEGIN {
FS = ":";
BD = "\\s+1\\f3";
ED = "\\fP\\s-1";
}
NR == 1 {
if ($3 != "")
printf(".Ib \"%s\"\n", $2);
major = $2;
minor = $3;
if ($4 == "@DEF@") {
pagelist = BD $1 ED;
}
else {
pagelist = $1;
}
pageno = $1;
oldpageno = $1;
oldpagelist = "";
}
NR != 1 {
if ($2 == major && $3 == minor) # neither has changed
{
if ($1 != pageno) { # new page number, append
oldpageno = $1;
oldpagelist = pagelist;
if ($4 == "@DEF@") {
pagelist = pagelist ", " BD $1 ED;
}
else {
pagelist = pagelist ", " $1;
}
}
else { # old page, but check for def
if ($4 == "@DEF@") {
if (pageno == oldpageno) {
if (oldpagelist != "")
oldpagelist = oldpagelist ", "
}
pagelist = oldpagelist BD $1 ED;
}
}
}
else # one has changed
{
if (minor != "") # dump full record
printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
else
printf(".I> \"%s\" \"%s\"\n", major, pagelist);
if ($4 == "@DEF@") { # restart pagelist
pagelist = BD $1 ED;
}
else {
pagelist = $1;
}
oldpagelist = "";
oldpageno = $1;
if ($2 != major && $3 != "") # major has changed, minor not null
printf(".Ib \"%s\"\n", $2);
}
major = $2;
minor = $3;
pageno = $1;
}
END {
if (minor != "") # dump full record
printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
else
printf(".I> \"%s\" \"%s\"\n", major, pagelist);
}